#include <stdio.h>
#include "inc\Circle.h"

/* ----------------------------------------------------------------------------------------------- *
 *	CIRCLE : реализация методов
 */

static void * Circle_ctor (void * _pSelf, va_list * ppArgs)
{
	POINT * pBase = _pSelf;

	// вызываем конструктор базового типа POINT
	CIRCLE * pSelf = pBase->pClass->pfnCtor(_pSelf, ppArgs);

	// доинициализируем окружность
	pSelf->rad = va_arg( *ppArgs, int );

	return pSelf;
}

static void Circle_draw(const void * _pSelf)
{
	const POINT * pBase = _pSelf;
	const CIRCLE * pSelf = _pSelf;
	printf("circle at %d,%d rad %d\n", pBase->x, pBase->y, pSelf->rad);
}

/* ----------------------------------------------------------------------------------------------- *
 *	ручная инициализация структур с мета-информацией об CIRCLE
 */

static const CLASS circle_class_info =
{
	sizeof(CIRCLE),
	Circle_ctor,
	0,
	Circle_draw
};

/* ----------------------------------------------------------------------------------------------- *
 *	инициализация "красивых" констант-указателей на мета-информацию о CIRCLE
 */

const void * Circle = &circle_class_info;





